﻿<%@ WebHandler Language="C#" Class="permitMange" %>

using System;
using System.Web;
using System.Text;
using Chenxin.Lib.Hr.Entity;
using Chenxin.Lib.Hr.BLL;
using Chenxin.Lib.Utility;
using System.Collections;
using System.Collections.Generic;

//****************************************************************
//   臣信二手房
//   Copyright (c) 2010 Chenxin.                        
//****************************************************************
//****************************************************************      
//作成者       :  he.jifeng   
//创建日期     :  2010-02-26                 
//確認者       :  確認者          
//功能概要　   :  权限登录
//****************************************************************
public class permitMange : AjaxHandlerBase{

    public permitMange()
    {
        //添加权限
        htTypePermit.Add("add", Constants.Permit_PermitAdd);
        //获取权限信息(编辑权限)
        htTypePermit.Add("get", Constants.Permit_PermitEdit);
        //编辑权限
        htTypePermit.Add("edit", Constants.Permit_PermitEdit);
        //删除权限
        htTypePermit.Add("del", Constants.Permit_PermitDel);
    }
    //*******************************************
    //功能概要       ：重写的请求处理方法
    //参数説明       ：context 请求的上下文
    //返回值説明     ：无
    //功能詳細       ：父类中隐藏了IHttpHandler接口方法，本类中须对本方法进行重写
    //作成者         ：he.jifeng 
    //作成日         ：2010-02-26 
    //*******************************************
    override public void RequestProcess(HttpContext context)
    {
        context.Response.ContentType = "text/plain";
        context.Response.AddHeader("pragma", "no-cache");
        context.Response.AddHeader("cache-control", "");
        context.Response.CacheControl = "no-cache";

        //处理类型
        string strDealType = context.Request.Params["op"].ToString();
        //返回字符串
        string strRet = "";

        //按类型处理
        switch (strDealType.ToLower())
        {
            case "getall":
                strRet = getAllPermits(context);
                break;
            case "add":
                strRet = addPermit(context);
                break;
            case "edit":
                //编辑
                strRet = editPermit(context);
                break;
            case "get":
                strRet = getPermitById(context);
                break;
            case "del":
                strRet = delPermit(context);
                break;
                //编号查询
            case "existscode":
                strRet = ExistsCode(context);
                break;
        }
        //响应
        context.Response.Write(strRet);
                
    }
    //*******************************************
    //功能概要       ：得到所有权限
    //参数説明       ：context 请求的上下文
    //返回值説明     ：无
    //功能詳細       ：得到所有权限
    //作成者         ：he.jifeng 
    //作成日         ：2010-03-01 
    //*******************************************
    private string getAllPermits(HttpContext context)
    {
        //返回字符串
        string strRet;
        
        //业务权限类
        Chenxin.Lib.Hr.BLL.Base_Permit_Define bllBasePermitDefine = new Chenxin.Lib.Hr.BLL.Base_Permit_Define();
        try
        {
            string strHtml;
            
            //权限类
            ArrayList lsPermits = bllBasePermitDefine.GetModelListDividedByType();

            //输出权限信息
            strHtml = crtHtmlOfAllPermits(lsPermits);
            strRet = retExecResult(Constants.ExecResult.Succ, "", strHtml);

            return strRet;
        }
        catch (Exception ex)
        {
            //输出错误信息
            System.Console.Write(ex.Message);
            //相应ERROR
            strRet = retExecResult(Constants.ExecResult.Error, ex.Message, "");
            return strRet;
        }
    }

    //*******************************************
    //功能概要       ：生成Html
    //参数説明       ：lsPermits 权限列表
    //返回值説明     ：Html显示字符串
    //功能詳細       ：根据得到的权限列表生成Hmtl显示
    //作成者         ：he.jifeng 
    //作成日         ：2010-02-26 
    //*******************************************
    private string crtHtmlOfAllPermits(ArrayList lsPermits)
    {
        //Html结果
        StringBuilder strHtml = new StringBuilder();
        //权限类别名
        string strPermitNm;

        //循环权限列表
        for (int idxPermits = 0; idxPermits < lsPermits.Count; idxPermits++)
        {
            List<Chenxin.Lib.Hr.Entity.Base_Permit_Define> curCldPermits = ((List<Chenxin.Lib.Hr.Entity.Base_Permit_Define>)lsPermits[idxPermits]);
            //各组的首个对象
            Chenxin.Lib.Hr.Entity.Base_Permit_Define model = curCldPermits[0];
            strHtml.Append("<div class='clsPermitType'>");
            strHtml.Append(model.PermitGroup);
            strHtml.Append("</div>");
            strHtml.Append("<div class='clsShowPermit'>");
            strHtml.Append("<ul>");
            for (int idxCldPermits = 0; idxCldPermits < curCldPermits.Count; idxCldPermits++)
            {
                strPermitNm = curCldPermits[idxCldPermits].PermitName;
                strHtml.Append("<li>【<a title='" + strPermitNm + "' class='clsEditPermit' href='#" + curCldPermits[idxCldPermits].PermitID + "'>" + strPermitNm + "</a>】</li>");
            }
            strHtml.Append("</ul>");
            strHtml.Append("</div>");
        }

        return strHtml.ToString();
    }
    
    //*******************************************
    //功能概要       ：添加权限
    //参数説明       ：context 请求的上下文
    //返回值説明     ：无
    //功能詳細       ：添加权限
    //作成者         ：he.jifeng 
    //作成日         ：2010-03-01 
    //*******************************************
    private string addPermit(HttpContext context)
    {
        //返回字符串
        string strRet;
                
        //权限的业务处理类
        Chenxin.Lib.Hr.BLL.Base_Permit_Define bllBasePermitDefine = new Chenxin.Lib.Hr.BLL.Base_Permit_Define();
 
        //权限Model类
        Chenxin.Lib.Hr.Entity.Base_Permit_Define entBasePermitDefine = (Chenxin.Lib.Hr.Entity.Base_Permit_Define)Chenxin.Lib.Utility.JsonHelp.Convert2Entity(context.Request["model"], typeof(Chenxin.Lib.Hr.Entity.Base_Permit_Define));

        //权限ID
        entBasePermitDefine.PermitID = Guid.NewGuid();
        //权限编号
        entBasePermitDefine.PermitCode = entBasePermitDefine.PermitCode.ToLower();

        try
        {
            //插入数据
            bllBasePermitDefine.Add(entBasePermitDefine);

            //添加用户操作日志 2010-5-12 王玮 Add
            AddLog("" + CurrentUserInfo.UserName + "添加了一个权限:权限名称为[" + entBasePermitDefine.PermitName + "]",
                    OperationType.OperationTypeComboList()["OprType_PermitAdd"].ToString());          
            
            //执行成功
            strRet = retExecResult(Constants.ExecResult.Succ, "添加成功", "");
            return strRet;
        }
        catch (Exception ex)
        {
            //输出错误信息
            System.Console.Write(ex.Message);
            //失败
            strRet = retExecResult(Constants.ExecResult.Error, ex.Message, "");
            return strRet;
        }
    }

    //*******************************************
    //功能概要       ：取得权限
    //参数説明       ：context 请求的上下文
    //返回值説明     ：无
    //功能詳細       ：按权限Id取得权限
    //作成者         ：he.jifeng 
    //作成日         ：2010-03-01 
    //*******************************************
    private string getPermitById(HttpContext context)
    {
        //响应内容
        string strRet;
        
        //权限的业务处理类
        Chenxin.Lib.Hr.BLL.Base_Permit_Define bllBasePermitDefine = new Chenxin.Lib.Hr.BLL.Base_Permit_Define();
        //权限Id
        string strPermitId = context.Request.Params["PermitId"].ToString();

        try
        {
            //权限Model类
            Chenxin.Lib.Hr.Entity.Base_Permit_Define entBasePermitDefine = bllBasePermitDefine.GetModel(new Guid(strPermitId));
            //转化为Json数据
            strRet = retExecResult(Constants.ExecResult.Succ, "OK", entBasePermitDefine);
            return strRet;
        }
        catch (Exception ex)
        {
            //输出错误信息
            System.Console.Write(ex.Message);
            strRet = retExecResult(Constants.ExecResult.Error, ex.Message, "");
            return strRet;
        }

    }
    
    //*******************************************
    //功能概要       ：编辑权限
    //参数説明       ：context 会话上下文
    //返回值説明     ：无
    //功能詳細       ：权限编辑的后台实现
    //作成者         ：he.jifeng 
    //作成日         ：2010-03-01 
    //*******************************************
    private string editPermit(HttpContext context)
    {
        //响应内容
        string strRet;

        //权限的业务处理类
        Chenxin.Lib.Hr.BLL.Base_Permit_Define bllBasePermitDefine = new Chenxin.Lib.Hr.BLL.Base_Permit_Define();
        //权限Model类
        Chenxin.Lib.Hr.Entity.Base_Permit_Define entBasePermitDefine = (Chenxin.Lib.Hr.Entity.Base_Permit_Define)Chenxin.Lib.Utility.JsonHelp.Convert2Entity(context.Request["model"], typeof(Chenxin.Lib.Hr.Entity.Base_Permit_Define));

        //权限编号
        entBasePermitDefine.PermitCode = entBasePermitDefine.PermitCode.ToLower();
        
        try
        {
            //数据更新
            bllBasePermitDefine.Update(entBasePermitDefine);
            
            //添加用户操作日志 2010-5-12 王玮 Add
            AddLog("" + CurrentUserInfo.UserName + "编辑了一个权限:权限名称为[" + entBasePermitDefine.PermitName + "]",
                    OperationType.OperationTypeComboList()["OprType_PermitEdit"].ToString());      
            
            //执行成功
            strRet = retExecResult(Constants.ExecResult.Succ, "更新成功", "");
            return strRet;
        }
        catch (Exception ex)
        {
            //输出错误信息
            System.Console.Write(ex.Message);
            //失败
            strRet = retExecResult(Constants.ExecResult.Error, ex.Message, "");
            return strRet;
        }
    }
    
    //*******************************************
    //功能概要       ：删除权限
    //参数説明       ：context 会话上下文
    //返回值説明     ：无
    //功能詳細       ：删除权限
    //作成者         ：he.jifeng 
    //作成日         ：2010-03-01 
    //*******************************************
    private string delPermit(HttpContext context)
    {
        //响应内容
        string strRet;
            
        //权限的业务处理类
        Chenxin.Lib.Hr.BLL.Base_Permit_Define bllBasePermitDefine = new Chenxin.Lib.Hr.BLL.Base_Permit_Define();
        
        //权限Id
        string strPermitId = context.Request.Params["modelid"].ToString();

        try
        {
            Chenxin.Lib.Hr.Entity.Base_Permit_Define clhebpd = Chenxin.Lib.Hr.DAL.Base_Permit_Define.GetModel(new Guid(strPermitId));
            
            //删除
            bllBasePermitDefine.Delete(new Guid(strPermitId));
            
            //添加用户操作日志 2010-5-12 王玮 Add
            AddLog("" + CurrentUserInfo.UserName + "删除了一个权限:权限名称为[" + clhebpd.PermitName + "]",
                    OperationType.OperationTypeComboList()["OprType_PermitDel"].ToString());  
            
            //执行成功
            strRet = retExecResult(Constants.ExecResult.Succ, "删除成功", "");
            return strRet;
        }
        catch (Exception ex)
        {
            //输出错误信息
            System.Console.Write(ex.Message);
            //执行失败
            strRet = retExecResult(Constants.ExecResult.Error, ex.Message, "");
            return strRet;
        }
    }
    
    //*******************************************
    //功能概要       ：权限编号查询
    //参数説明       ：context 会话上下文
    //返回值説明     ：无
    //功能詳細       ：权限编号查询
    //作成者         ：he.jifeng 
    //作成日         ：2010-03-23 
    //*******************************************
    public string ExistsCode(HttpContext context)
    {
        //响应内容
        string strRet;
        
        try
        {
            //权限编号
            string strPermitCode = context.Request.Params["PermitCode"];

            //权限的业务处理类
            Chenxin.Lib.Hr.BLL.Base_Permit_Define bllBasePermitDefine = new Chenxin.Lib.Hr.BLL.Base_Permit_Define();

            //执行成功
            strRet = retExecResult(Constants.ExecResult.Succ, "OK", bllBasePermitDefine.ExistsCode(strPermitCode));
            return strRet;

        }
        catch (Exception ex)
        {
            //执行失败
            strRet = retExecResult(Constants.ExecResult.Error, ex.Message, "");
            return strRet;
        }
    }
}